package cn.iocoder.yudao.module.javainfo.service.tagcloud;

import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.module.javainfo.controller.admin.tagcloud.vo.TagCloudItemRespVO;
import cn.iocoder.yudao.module.javainfo.dal.dataobject.pet.PetDO;
import cn.iocoder.yudao.module.javainfo.dal.dataobject.user.UserDO;
import cn.iocoder.yudao.module.javainfo.dal.mysql.pet.PetMapper;
import cn.iocoder.yudao.module.javainfo.dal.mysql.user.JavaInfoUserMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 标签云 Service 实现类
 */
@Service
@Validated
public class TagCloudServiceImpl implements TagCloudService {

    @Resource
    private JavaInfoUserMapper javaInfoUserMapper;

    @Resource
    private PetMapper petMapper;

    @Override
    public List<TagCloudItemRespVO> getUserNameTags() {
        // 查询所有用户
        List<UserDO> userList = javaInfoUserMapper.selectList();
        if (CollUtil.isEmpty(userList)) {
            return Collections.emptyList();
        }

        // 转换为标签云数据
        return userList.stream()
                .map(user -> {
                    TagCloudItemRespVO tag = new TagCloudItemRespVO();
                    tag.setName(user.getUserName());
                    // 这里可以设置URL，例如跳转到用户详情页
                    tag.setUrl("/javainfo/user/detail?id=" + user.getId());
                    return tag;
                })
                .collect(Collectors.toList());
    }

    @Override
    public List<TagCloudItemRespVO> getPetNameTags() {
        // 查询所有宠物
        List<PetDO> petList = petMapper.selectList();
        if (CollUtil.isEmpty(petList)) {
            return Collections.emptyList();
        }

        // 转换为标签云数据
        return petList.stream()
                .map(pet -> {
                    TagCloudItemRespVO tag = new TagCloudItemRespVO();
                    tag.setName(pet.getPetName());
                    // 这里可以设置URL，例如跳转到宠物详情页
                    tag.setUrl("/javainfo/pet/detail?id=" + pet.getId());
                    return tag;
                })
                .collect(Collectors.toList());
    }

    @Override
    public List<TagCloudItemRespVO> getPetPhotoTags() {
        // 查询所有有照片的宠物
        List<PetDO> petList = petMapper.selectList();
        if (CollUtil.isEmpty(petList)) {
            return Collections.emptyList();
        }

        // 过滤出有照片的宠物，并转换为标签云数据
        return petList.stream()
                .filter(pet -> pet.getPhotoUrl() != null && !pet.getPhotoUrl().isEmpty())
                .map(pet -> {
                    TagCloudItemRespVO tag = new TagCloudItemRespVO();
                    tag.setName(pet.getPetName());
                    tag.setUrl("/javainfo/pet/detail?id=" + pet.getId());
                    tag.setImage(pet.getPhotoUrl()); // 设置图片URL
                    return tag;
                })
                .collect(Collectors.toList());
    }
}

